package com.upcoming.token;

import com.upcoming.common.AccessToken;
import com.upcoming.common.AppToken;
import com.upcoming.common.ServiceResponse;

import java.util.Map;

/**
 * 作者：tianjiayuan
 * 创建时间：2018-05-10 11:17
 * 类描述：
 * 修改人：
 * 修改时间：
 */
public interface TokenService {
    /**
     * 生成一个APPToken
     * 用户token的有效期：app的token有效期为一个月
     *
     * @param userId   用户id
     * @param deviceId 设备的唯一标识
     * @return 用户的token
     */
    public ServiceResponse<AppToken> generateAppToken(String userId, String deviceId);

    /**
     * 生成一个APPToken
     * 用户token的有效期：app的token有效期为一个月
     *
     * @param userId 用户id
     * @return 用户的token
     */
    public ServiceResponse<AppToken> generateAppToken(String userId);

    /**
     * 生成一个AccessToken
     *
     * @param appId  应用唯一标识
     * @param secret 密钥
     * @return
     */
    public ServiceResponse<AccessToken> generateAccessToken(String appId, String secret);

    /**
     * 校验AppToken
     *
     * @param userId   用户id
     * @param deviceId 设备的唯一标识
     * @param token    用户的token
     * @return token是否有效
     */
    public ServiceResponse<Boolean> checkAppToken(String userId, String deviceId, String token);

    public ServiceResponse<Boolean> checkAppToken(String userId, String token);

    /**
     * 校验AccessToken
     *
     * @param accessToken 访问凭证
     * @param parameters  请求参数
     * @param signature   参数签名
     * @return
     */
    public ServiceResponse<Boolean> checkAccessToken(String accessToken, Map<String, Object> parameters, String signature);
}
